// 在使用toast方法时，可以传入参数，也可以不传入参数
// 如果需要传入参数，要传入对象作为参数
// const toast = (options = {}) => {}

/**
 * 消息提示框
 * @param { Object } options 参数和wx.showToast 参数保持一致
 */
const toast = ({ title = '数据加载中', icon = 'none', duration = 2000, mask = true } = {}) => {
    wx.showToast({ title, icon, duration, mask })
} 

/**
 * 
 * @param { Object } options 参数和wx.showModal参数保持一致
 */
const modal = (options = {}) => {
    // 再调用modal方法时，可以传递参数，也可以不传递参数
    // 如果不传递参数，默认值就是空对象
    // 如果传递参数，参数需要是一个对象，对象中的属性需要和wx.showModal参数保持一致

    // 在方法内部需要通过 Promise 返回用户操作
    // 如果用户点击了确定，需要通过resolve返回true
    // 如果用户点击了取消，需要通过resolve返回false
    return new Promise((resolve)=>{
        // 默认的参数
        const defaultOpt = {
            title: '提示',
            content: '您确定执行该操作吗?',
            confirmColor: '#f3514f'
        }
        // 通过Object.assign方法将参数进行合并
        // 需要使用传入的参数覆盖默认的参数
        // 为了不影响默认的参数，需要将合并以后的参数赋值给一个空对象
        const opts = Object.assign({}, defaultOpt, options)
        wx.showModal({
            // 将合并以后的参数通过展开运算符赋值给 wx.showModal 对象
          ...opts,
          complete({confirm, cancel}) {
            confirm && resolve(true)
            cancel && resolve(false)
          }
        })
    })
}





// 将toast方法挂载到wx全局对象身上
// 如果想挂载到wx全局对象上，这种写法生效，需要让当前文件执行一次
wx.toast  = toast
wx.modal = modal

export { toast, modal }